package gestionBDD;

import java.sql.* ;
import interne.Client;

public class requetesClient {

	/*
	 * Ajoute une entrée dans la table Client
	 * Entrée : Objet client avec tous les attributs sauf l'id_client
	 */
	public static void ajouterClient(Client c) throws SQLException {
		try {
			String sql = "INSERT INTO CLIENT (email, motdepasse, nom, prenom, adresse) VALUES(?,?,?,?,?)";
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, c.getEmail());
			statement.setObject(2,c.getMotdepasse());
			statement.setObject(3,c.getNom());
			statement.setObject(4, c.getPrenom());
			statement.setObject(5, c.getAdresse());
			statement.executeUpdate();
			statement.close();
			accesBDD.getInstance().commit();
		}
		catch(SQLException e) {
			System.out.println(e) ;
		}
	}
	
	/*
	 * Remplit les attributs d'un objet client
	 * Entrée : Objet client avec email
	 */
	public static Client trouverAvecMail(Client c) throws SQLException {
		try {
			String sql = "SELECT * FROM CLIENT WHERE EMAIL = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, c.getEmail()) ;
			ResultSet rs = statement.executeQuery();
			rs.next() ;
			c.setIdClient(rs.getInt("ID_CLIENT")) ;
			c.setNom(rs.getString("NOM"));
			c.setPrenom(rs.getString("PRENOM"));
			c.setAdresse(rs.getString("ADRESSE"));
			rs.close();
			statement.close();
		}
		catch(SQLException e) {
			System.out.println(e) ;		
		}
		return c ;
	}
	
	/*
	 * Remplit un objet client avec tous les atributs
	 * Entrée : Objet Client avec id_client
	 */
	public static Client trouverAvecId(Client c) throws SQLException {
		try {
			String sql = "SELECT * FROM CLIENT WHERE id_client = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, c.getIdClient()) ;
			ResultSet rs = statement.executeQuery();
			rs.next() ;
			c.setEmail(rs.getString("EMAIL")) ;
			c.setNom(rs.getString("NOM"));
			c.setPrenom(rs.getString("PRENOM"));
			c.setAdresse(rs.getString("ADRESSE"));
			rs.close();
			statement.close();
		}
		catch(SQLException e) {
			System.out.println(e) ;		
		}
		return c ;
	}
	
	/*
	 * Authentifie l'utilisateur
	 * Entrée : Objet Client avec email et motdepasse
	 * Retour : Vrai, si la paire de login correspond à celle de la base de données
	 */
	public static Boolean connecterClient(Client c) throws SQLException {
		try {
			String sql = "SELECT * FROM CLIENT WHERE EMAIL = ? and MOTDEPASSE = ?" ;
			PreparedStatement statement = accesBDD.getInstance().prepareStatement(sql);
			statement.setObject(1, c.getEmail()) ;
			statement.setObject(2, c.getMotdepasse()) ;
			ResultSet rs = statement.executeQuery();
			return rs.next() ;
		}
		catch(SQLException e) {
			System.out.println(e) ;		
		}
		return false;
	}
}
